package org.egedede.simulation.model;

import java.util.Collection;

/**
 * A model is
 * @author tiaped
 */
public interface Model {
	/**
	  * Returns a label which is used to display the model
	  * @return
	  * 	the label
	  */
	public String getLabel();

	/**
	 * Returns an identifier for the model in the simulation.
	 * This identifier should be unique
	 *
	 * @return
	 * 		an identifier for the model.
	 */
	public String getId();

	/**
	 * Returns {@link ModelType}s of this model
	 * @return types
	 */
	public Collection<ModelType> getTypes();

	/**
	 * Returns the number of times this simulation had ran.
	 * @param counter
	 */
	public void setIteration(int counter);

	public int getIteration();

}
